import { BaseQuery } from "@/types/common/response";

/**
 * 人员状态枚举
 */
export enum PersonnelStatus {
  /** 在岗 */
  ON_JOB = "0",
  /** 离场 */
  LEAVED = "1",
  /** 休假 */
  ON_VACATION = "2"
}

/**
 * 人员级别枚举
 */
export enum PersonnelLevel {
  /** 初级 */
  JUNIOR = "01",
  /** 中级 */
  INTERMEDIATE = "02",
  /** 高级 */
  SENIOR = "03",
  /** 专家 */
  EXPERT = "04"
}

/**
 * 性别枚举
 */
export enum Gender {
  /** 男 */
  MALE = "0",
  /** 女 */
  FEMALE = "1",
  /** 未知 */
  UNKNOWN = "2"
}

/**
 * 人员查询参数
 */
export interface PersonnelQuery extends BaseQuery {
  /** 人员编号 */
  personnelId?: string | number;
  /** 姓名 */
  personnelName?: string;
  /** 所属供应商ID */
  supplierId?: string | number;
  /** 职位/角色 */
  position?: string;
  /** 级别 */
  level?: string;
  /** 状态 */
  status?: string;
}

/**
 * 人员视图对象
 */
export interface PersonnelVO {
  /** 人员ID */
  personnelId: number;
  /** 人员编码 */
  personnelCode: string;
  /** 人员姓名 */
  personnelName: string;
  /** 身份证号 */
  idNumber: string;
  /** 供应商ID */
  supplierId: number;
  /** 供应商名称 */
  supplierName: string;
  /** 性别 */
  gender: string;
  /** 性别名称 */
  genderName: string;
  /** 出生日期 */
  birthDate: string;
  /** 手机号码 */
  phoneNumber: string;
  /** 电子邮箱 */
  email: string;
  /** 级别 */
  level: string;
  /** 级别名称 */
  levelName: string;
  /** 人月单价 */
  monthlyRate: number;
  /** 入场日期 */
  entryDate: string;
  /** 离场日期 */
  leaveDate: string | null;
  /** 状态 */
  status: string;
  /** 状态名称 */
  statusName: string;
  /** 关联用户ID */
  userId: number | null;
  /** 备注 */
  remark: string;
  /** 创建时间 */
  createTime: string;
}

/**
 * 人员表单对象
 */
export interface PersonnelForm {
  /** 人员姓名 */
  personnelName: string;
  /** 人员编码 */
  personnelCode: string;
  /** 身份证号 */
  idNumber: string;
  /** 所属供应商ID */
  supplierId: string | number;
  /** 性别 */
  gender: Gender;
  /** 出生日期 */
  birthDate?: string;
  /** 级别 */
  level: PersonnelLevel;
  /** 人月单价 */
  monthlyRate: number;
  /** 手机号码 */
  phoneNumber: string;
  /** 电子邮箱 */
  email?: string;
  /** 入场日期 */
  entryDate: string;
  /** 离场日期 */
  leaveDate?: string;
  /** 状态 */
  status: PersonnelStatus;
  /** 关联用户ID */
  userId?: number;
  /** 备注 */
  remark?: string;
}

/**
 * 人员请求对象
 */
export interface PersonnelRequest extends PersonnelForm {
  /** 人员ID */
  personnelId?: string | number;
}

/**
 * 供应商选项对象
 */
export interface SupplierOption {
  /** 选项值 - 供应商ID */
  value: string | number;
  /** 选项标签 - 供应商名称 */
  label: string;
  /** 供应商编码 */
  code?: string;
  /** 供应商状态 */
  status?: string;
  /** 后端返回的原始属性 */
  supplierId?: number;
  supplierName?: string;
  supplierCode?: string;
}
